package day12;

//volatile原子性
public class Demo2 implements Runnable {
     int count;  //模拟购买的数量
    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            //volatile 不能保证下面的复合操作都成功 都失败
            //但是可以保证属性单个操作 是原子性     所以它不能保证线程安全
            //通常通过synchronized同步锁保证安全
            synchronized (this) {
                count++;        //属于三次操作    读取  计算  赋值
                //count = 100;  属于一次操作
            }
            System.out.println("购买的商品数量" + count);
        }
    }

    public static void main(String[] args) {
        Demo2 d = new Demo2();
        for (int i = 0; i < 1000; i++) {
            new Thread(d).start();
        }
    }
}
